In distributed computing, an application program is typically broken into multiple subprograms, which are executed by multiple processors that may belong to different computer hosts. To coordinate such distributed execution, the computer hosts typically exchange messages with one another over a communication network.
Methods for executing distributed application programs are known in the art. For example, U.S. Pat. No. 7,549,151, whose disclosure is incorporated herein by reference, describes an asynchronous message passing mechanism that allows for multiple messages to be batched for delivery between processes, while allowing for full memory protection during data transfers and a lockless mechanism for speeding up queue operation and queuing and delivering messages simultaneously.
U.S. Pat. No. 9,286,145, whose disclosure is incorporated herein by reference, describes processing data communications events in a parallel active messaging interface (denoted “PAMI”) of a parallel computer that includes compute nodes that execute a parallel application, with the PAMI including data communications endpoints, and the endpoints are coupled for data communications through the PAMI and through other data communications resources, including determining by an advance function that there are no actionable data communications events pending for its context, placing by the advance function its thread of execution into a wait state, waiting for a subsequent data communications event for the context; responsive to occurrence of a subsequent data communications event for the context, awakening by the thread from the wait state, and processing by the advance function the subsequent data communications event now pending for the context.
Techniques for distributing messages received over a communication network among multiple queues are known in the art. For example, Receive Side Scaling (RSS) is a technology that enables hash-based distribution of messages received over an Ethernet network among multiple CPUs in a multiprocessor system. RSS is specified, for example, by Tom Herbert et al., in a document entitled “Scaling in the Linux Networking Stack,” which is incorporated herein by reference.